package lexico;

public class ClasseLiteral extends ClasseSimbolo
{
	public ClasseLiteral(AnalisadorLexico analisador)
	{
		super(analisador);
	}

	@Override
	public boolean test(String simbolo)
	{
		String padrao = "^\"$|^'$";
		return simbolo.matches(padrao);
	}

	@Override
	public void ler(String ultimoSimbolo)
	{
		AnalisadorLexico analisador = getAnalisador();
		String tmp = null;
		try
		{
			tmp = ultimoSimbolo + analisador.readChar();

			while (!isLiteralCompleto(tmp))
			{
				ultimoSimbolo = tmp;
				tmp += analisador.readChar();
			}
		} catch (Exception e)
		{
			analisador.setFinal();
		}

		ultimoSimbolo = tmp;

		analisador.addSimbolo(new Simbolo(ultimoSimbolo, Simbolo.LITERAL));
	}

	private boolean isLiteralCompleto(String simbolo)
	{
		String padrao = "^\".*?\"$|^'.*?'$";
		return simbolo.matches(padrao);
	}

}
